# CentOS安装oracle 11g步骤
# 前期准备工作
#服务器命名(不能有减号(-))
hostname <SERVER_NAME> ## hostname dsdbm <direct selling database main>
vi /etc/hosts
#####在文件末尾增加如下内容 开始#####
ip <SERVER_NAME> ## 10.100.0.3 dsdbm
#####在文件末尾增加如下内容 结束#####
#服务器时区时间设置
yum install chrony ##安装时间日期软件包
systemctl start chronyd ##启动时间日期软件
systemctl enable chronyd ##开机启动
timedatectl set-timezone Asia/Shanghai ##设置北京时区
timedatectl set-ntp yes #启用ntp同步
timedatectl ##查看详细时区日期时间
# 安装必要的软件包
yum -y install libaio-devel-*.i686* compat-libstdc++-*.i686*
yum -y install binutils-* compat-libstdc++* compat-libcap1* gcc-4.4.4-* libstdc++-devel-4.*
yum -y install libstdc++* sysstat-* make-* libgcc-* libaio-* ksh-* glibc-devel-*
yum -y install binutils compat-libstdc elfutils-libelf elfutils-libelf-devel elfutils-libelf-devel-static gcc gcc-c++ glibc glibc-common glibc-devel
yum -y install binutils glibc-headers kernel-headers libaio libaio-devel libgcc libgomp libstdc++ libstdc++-devel libXau-devel libXp libXp-devel make
yum -y install sysstat unixODBC unixODBC-devel unixODBC-libs util-linux libXp-1.0.2-2.1.el6.i686 libXp-devel-1.0.2-2.1.el6.i686 libXt-1.1.4-6.1.el6.i686
yum -y install glibc-devel-2.12-1.192.el6.i686 libXtst libXtst-1.2.2-2.1.el6.i686 libstdc++.so.5 compat-libstdc++-33 install libXp.so.6 libstdc++.so.5
yum -y install libXtst-1.2.2-2.1.el7*86 libXt* libXp* libstdc++* libXt-1.1.4-6.1.el6*686 libXp*686 libXt*686 libxtst*686
# 创建账号和目录,授权
# 创建软件目录
mkdir -p /u01/soft ## 用于存放下载的软件p13390677_112040_Linux-x86-64_1of7.zip等
# 下载软件
scp -P 222 root@xxx.xxx.xx.xx:/u01/soft/p13390677_112040_Linux-x86-64_1of7.zip /u01/soft
scp -P 222 root@xxx.xxx.xx.xx:/u01/soft/p13390677_112040_Linux-x86-64_2of7.zip /u01/soft
# 下载附加脚本
scp -P 222 root@xxx.xxx.xx.xx:/u01/soft/rman.sh /u01/soft
scp -P 222 root@xxx.xxx.xx.xx:/u01/soft/xdump.par /u01/soft
scp -P 222 root@xxx.xxx.xx.xx:/u01/soft/xdump.sh /u01/soft
scp -P 222 root@xxx.xxx.xx.xx:/u01/soft/xdb_inst.rsp /u01/soft
# 解压软件
unzip p13390677_112040_Linux-x86-64_1of7.zip
unzip p13390677_112040_Linux-x86-64_2of7.zip
#复制安装脚本到相应目录
cp /u01/soft/xdb_inst.rsp /u01/soft/database/response/
mkdir -p /u01/oracle ##oracle的安装目录
# 创建安装目录里必要的目录(/u01/oracle)
mkdir -p /u01/oracle/product/11.2.0/db_1
mkdir -p /u01/oracle/oraInventory
# 创建数据存放、归档和备份目录(/home/oradata)
mkdir -p /home/oradata/archivelog
mkdir -p /home/oradata/xdump
mkdir -p /home/oradata/datas
mkdir -p /home/oradata/fra
mkdir -p /home/oradata/rman
#复制备份脚本到相应目录
cp /u01/soft/rman.sh /home/oradata/rman/
cp /u01/soft/xdump.par /home/oradata/xdump/
cp /u01/soft/xdump.sh /home/oradata/xdump/
# 创建oracle用户和组(oinstall,dba,oper)
groupadd -g 600 oinstall
groupadd -g 601 dba
groupadd -g 602 oper
useradd -u 600 -g oinstall -G dba,oper oracle
# 授权目录(/u01,/home/oradata)
chown -R oracle:oinstall /u01
chmod -R 775 /u01
chown -R oracle:oinstall /home/oradata
chmod -R 775 /home/oradata
# 配置oracle用户环境
# 配置oracle用户打开进程数和文件数限制
vi /etc/security/limits.conf
#####在文件末尾增加如下内容 开始#####
oracle soft nproc 2047 ##进程数发出警告条件
oracle hard nproc 16384 ##进程数最大限制数
oracle soft nofile 1024 ##文件数
oracle hard nofile 65536 ##文件数
oracle soft stack 10240
#####在文件末尾增加如下内容 结束#####
# 配置oracle环境变量
su - oracle
vi .bash_profile
#######在export PATH前增加内容 开始#######
export PS1="`/bin/hostname -s`-> "
export EDITOR=vi
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_BASE=/u01/oracle
export ORACLE_HOME=/u01/oracle/product/11.2.0/db_1
export ORACLE_SID=<ORACLE_SID> ## dsdb
#export GG_HOME=/home/ggs
export PATH=$ORACLE_HOME/bin:/home/ggs:/usr/sbin:$PATH
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
######在export PATH前增加内容 结束########
# 安装oracle软件
# 进入oracle用户环境
su - oralce
# 安装脚本修改(xdb_inst.rsp即是db_install.rsp)
vi /u01/soft/database/response/xdb_inst.rsp
###开始####
ORACLE_HOSTNAME=<SERVER_NAME> ## dsdbm
UNIX_GROUP_NAME=oinstall
INVENTORY_LOCATION=/u01/oracle/oraInventory
SELECTED_LANGUAGES=en
ORACLE_HOME=/u01/oracle/product/11.2.0/db_1
ORACLE_BASE=/u01/oracle
oracle.install.db.DBA_GROUP=dba
oracle.install.db.OPER_GROUP=oper
oracle.install.db.config.starterdb.globalDBName=<ORACLE_SID> ##dsdb
oracle.install.db.config.starterdb.SID=<ORACLE_SID> ##dsdb
oracle.install.db.config.starterdb.fileSystemStorage.dataLocation=/home/oradata/datas
oracle.install.db.config.starterdb.fileSystemStorage.recoveryLocation=/home/oradata/fra
###结束####
# 进入软件目录
cd /u01/soft/database
# 静默安装(如果失败则修复bug再执行静默安装)
./runInstaller -silent -ignoreSysPrereqs -showProgress -responseFile /u01/soft/database/response/xdb_inst.rsp
# 安装完成,查看状态
lsnrctl status
# 启动数据库
lsnrctl start ## lsnrctl stop 停止数据库
# 查看数据库配置tnsnames.ora和监听文件listener.ora,修改端口
cd /u01/oracle/product/11.2.0/db_1/network/admin/
ls -ltr
# telnet 测试
yum -y install net-tools
telent ip port
# 配置防火墙
以下是表示10.3.0.x和10.100.0.x这两个ip段的ip都可以访问,多个ip用英文逗号隔开,开放端口是1521
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.3.0.0/24,10.100.0.0/24" port protocol="tcp" port="1521" accept'
对所有ip开放1521端口
firewall-cmd --permanent --add-port=1521/tcp
修改后需要重载配置或重启防火墙才生效
# 重启防火墙或重新加载 systemctl restart firewalld ## firewall-cmd --reload
# 还原数据库
su - oracle
sqlplus / as sysdba
###sqlplus>>>
# 创建directory
select * from dba_directories;
create directory xdump as '/home/oradata/xdump';
# 创建tablespace
select * from dba_tablespaces;
create tablespace <tablespace_name> logging datafile '/home/oradata/datas/<oracle_sid>/<tablespace_name>.dbf' size 5120m autoextend on next 100m extent management local;
# 创建用户
create user <username> identified by <password> default tablespace <tablespace_name>;
# 授权账户
grant resource,connect,dba to <username>;
###sqlplus>>>
# 导入数据库
impdp <username>/<password> directory=xdump dumpfile=<bak_file>.dump logfile=<bak_file>.log remap_tablespace=<old_tablespace>:<new_tablespace> remap_schema=<old_schema(old_username)>:<new_schema(new_username)> table_exists_action=append &
# 定时备份(rman)
备份脚本
su - oracle vi /home/oradata/rman/rman.sh ###rman.sh<<< #!/bin/bash BACKUP_TYPE=$1 source /home/oracle/.bash_profile echo 'Current time:'`date "+%F %H:%M:%S"` #backup full database if test $BACKUP_TYPE -eq 0; then echo '==================================================================================================================' echo 'backup full database' /u01/oracle/product/11.2.0/db_1/bin/rman target / <<EOF run { allocate channel c1 type disk maxpiecesize=15g; backup full database tag 'dbfull' format '/home/oradata/rman/datafile_%d_%T_%t_%s_%p.dbf'; backup incremental level 0 archivelog all tag 'level0' format '/home/oradata/rman/archivelog_%d_%T_%t_%s_%p.log'; release channel c1; crosscheck backup; delete noprompt obsolete; crosscheck archivelog all; delete expired archivelog all; } exit; EOF fi #backup incremental archivelog if test $BACKUP_TYPE -eq 1; then echo '==================================================================================================================' echo 'backup archivelog for level 1' /u01/oracle/product/11.2.0/db_1/bin/rman target / <<EOF run { allocate channel c1 type disk maxpiecesize=2g; backup incremental level 1 archivelog all tag 'level1' format '/home/oradata/rman/archivelog_%d_%T_%s_%p.log'; release channel c1; crosscheck archivelog all; delete expired archivelog all; } exit; EOF fi echo 'Backup Finish.' ###rman.sh>>>
全量备份设置
su - oracle /bin/bash /home/oradata/rman/rman.sh 0 >> /home/oradata/rman/rman.log 2>&1 & # 定时任务 每周3、6的1点启动全量备份 crontab -e ###crontab -e<<< 0 1 * * 3,6 /bin/bash /home/oradata/rman/rman.sh 0 >> /home/oradata/rman/rman.log 2>&1 & ###crontab -e>>>
增量备份设置
su - oracle /bin/bash /home/oradata/rman/rman.sh 1 >> /home/oradata/rman/rman.log 2>&1 & # 定时任务 每周日、1、2、4、5的1点启动增量备份。 crontab -e ###crontab -e<<< 0 1 * * 0,1,2,4,5 /bin/bash /home/oradata/rman/rman.sh 1 >> /home/oradata/rman/rman.log 2>&1 & ###crontab -e>>>
# 定时备份(expdp)
备份脚本(xdump.par & xdump.sh)
su - oracle # 创建xdump.par文件 vi /home/oradata/xdump/xdump.par ###xdump.par<<< directory=xdump dumpfile=dsdb_data.dump logfile=dsdb_data.log schemas=<schema_name> ## username EXCLUDE=TABLE:"IN ('API_LOG','XXX_bak')" #要排除的表名 ###xdump.par>>>
su - oracle # 创建xdump.sh文件 vi /home/oradata/xdump/xdump.sh ###xdump.sh<<< #!/bin/bash source /home/oracle/.bash_profile echo 'Begin expdp at '`date "+%F %H:%M:%S"` NOWTIME=`date +%Y%m%d_%H%M%S` BEFOREDAY=`date -d "-7 day" +%Y%m%d` cd /home/oradata/xdump expdp <username>/<password> parfile=xdump.par if test -e /home/oradata/xdump/dsdb_data.dump ; then cd /home/oradata/xdump mv dsdb_data.dump dsdb_data_${NOWTIME}.dump mv dsdb_data.log dsdb_data_${NOWTIME}.log dump_num=`ls -ltr | grep dsdb_data_ | grep .dump | awk 'END{print NR}'` if test $dump_num -ge 28 ; then rm dsdb_data_${BEFOREDAY}*.dump rm dsdb_data_${BEFOREDAY}*.log fi fi expdp \'/ as sysdba\' directory=xdump dumpfile=dsdb_metadata.dump logfile=dsdb_metadata.log schemas=<schema_name> content=METADATA_ONLY if test -e /home/oradata/xdump/dsdb_metadata.dump ; then cd /home/oradata/xdump mv dsdb_metadata.dump dsdb_metadata_${NOWTIME}.dump mv dsdb_metadata.log dsdb_metadata_${NOWTIME}.log dump_num=`ls -ltr | grep dsdb_metadata_ | grep .dump | awk 'END{print NR}'` if test $dump_num -ge 28 ; then rm dsdb_metadata_${BEFOREDAY}*.dump rm dsdb_metadata_${BEFOREDAY}*.log fi fi echo 'End expdp at '`date "+%F %H:%M:%S"` ###xdump.sh>>>
备份设置
su - oracle #测试脚本 /bin/bash /home/oradata/xdump/xdump.sh >> /home/oradata/xdump/xdump.log & # 定时任务 每天0、6、12、18点备份 crontab -e ###crontab -e<<< 0 0,6,12,18 * * * /bin/bash /home/oradata/xdump/xdump.sh >> /home/oradata/xdump/xdump.log & ###crontab -e>>>
# 问题1
重启后,实例没起来
cd /u01/oracle/product/11.2.0/db_1/network/admin/ vi listener.ora ###增加 开始### SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = 实例名) ##dsdb (SID_NAME = 实例名) ##dsdb ) ) ###结束####
# 问题2
tail -200f /u01/oracle/oraInventory/logs/silentInstall2020-03-16_11-03-11AM.log Error in invoking target 'agent nmhs' of makefile '/u01/oracle/product/11.2.0/db_1/sysman/lib/ins_emagent.mk'. See '/u01/oracle/oraInventory/logs/installActions2020-03-16_11-03-11AM.log' for details.
vi /u01/oracle/product/11.2.0/db_1/sysman/lib/ins_emagent.mk ####176行增加-lnnz11###### 175 $(SYSMANBIN)emdctl: 176 $(MK_EMAGENT_NMECTL) ###改成如下#### 175 $(SYSMANBIN)emdctl: 176 $(MK_EMAGENT_NMECTL) -lnnz11 ##########
# 删除oracle
/u01/oracle/product/11.2.0/db_1/deinstall/deinstall